Learn R Programming

phonR (version 1.0-1)

Normalize vowel formant frequencies: Normalize formant frequency values using a variety of algorithms

Description

Functions for transforming vowel formant frequency data measured in Hertz, using one of several normalization schemes commonly used in phonetic and sociolinguistic research. normVowels is a convenience function wrapping to the individual norm[Method] functions.

Usage

normBark(f)
    normErb(f)
    normLog(f)
    normMel(f)
    normLobanov(f, group=NULL)
    normLogmean(f, group=NULL, exp=FALSE, ...)
    normNearey1(f, group=NULL, exp=FALSE, ...)
    normNearey2(f, group=NULL, exp=FALSE, ...)
    normSharedLogmean(f, group=NULL, exp=FALSE, ...)
    normWattFabricius(f, vowel, group=NULL)
    normVowels(method, f0=NULL, f1=NULL, f2=NULL, f3=NULL, 
               vowel=NULL, group=NULL, ...)

Arguments

Value

Most of the functions return a vector or matrix of the same dimensions as were passed in. The exceptions are normVowels, which returns an n-by-m matrix of n data points by m formants with formants in ascending order with fundamental frequency first (if present), and normWattFabricius (or normVowels with method=wattfabricius), which only and always returns F1 and F2, regardless of whether f0 and F3 were supplied.

Details

normLogmean is a synonym for normNearey1, which is also sometimes confusingly called single logmean. normSharedLogmean is a synonym for normNearey2. The argument exp=TRUE for these functions will yield values that are consistent with the norm.nearey implementation, which takes the result of Nearey's original formulae and uses it as the exponent of the base of the natural logarithm (presumably so that the function always yields positive values).

Note that normErb returns the ERB-rate scale value (i.e., the number of ERBs below the given frequency), not the ERB of the auditory filter centered at the given frequency.

The implementation of the Watt-Fabricius method varies slightly from the formula in Watt & Fabricius (2002), since normWattFabricius simply calculates which vowel has the highest mean F1 value and designates it as the low corner of the triangle, rather than asking the user to expressly specify the TRAP or START vowel. Similarly, normWattFabricius simply calculates which vowel has the highest mean F2 value and uses that to calculate the upper left corner, rather than expressly looking for the mean of the point-vowel /i/. The upper right corner is, as in the original method, derived from the other two. If the vowels with the highest mean F1 and highest mean F2 are not the same pair of vowels for all members of group, normWattFabricius returns an error.

References

Glasberg, B. R., & Moore, B. C. J. 1990 Derivation of auditory filter shapes from notched-noise data. Hearing Research, 47(1-2), 103-138. http://dx.doi.org/10.1016/0378-5955(90)90170-T

Lobanov, B. M. 1971 Classification of Russian vowels spoken by different speakers. The Journal of the Acoustical Society of America, 49(2), 606-608. http://dx.doi.org/10.1121/1.1912396

McCloy, D. R. 2012 Normalizing and plotting vowels with the phonR package. Technical Reports of the UW Linguistic Phonetics Laboratory. http://depts.washington.edu/phonlab/pubs/McCloy2012_phonR.pdf

Nearey, T. M. 1978 Phonetic feature systems for vowels (Doctoral dissertation, University of Alberta). Reprinted by the Indiana University Linguistics Club. http://www.ualberta.ca/~tnearey/Nearey1978_compressed.pdf

Stevens, S. S., & Volkmann, J. 1940 The relation of pitch to frequency: A revised scale. The American Journal of Psychology, 53(3), pp. 329-353.

Traunmuller, H. 1990 Analytical expressions for the tonotopic sensory scale. The Journal of the Acoustical Society of America, 88(1), 97-100. http://dx.doi.org/10.1121/1.399849

Watt, D., & Fabricius, A. H. 2002 Evaluation of a technique for improving the mapping of multiple speakers' vowel spaces in the F1 ~ F2 plane. Leeds Working Papers in Linguistics and Phonetics, 9, 159-173.

Examples

Run this code
data(indoVowels)
    bark <- with(indo, normBark(cbind(f1, f2)))
    erbn <- with(indo, normErb(cbind(f1, f2)))
    mel <- with(indo, normMel(cbind(f1, f2)))
    lobanov <- with(indo, normLobanov(cbind(f1, f2), group=subj))
    lognormed <- with(indo, normLog(cbind(f1, f2)))
    # using the convenience wrapper:
    bark <- with(indo, normVowels('bark', f1=f1, f2=f2))
    wattfab <- with(indo, normVowels('wattfabricius', f1=f1, f2=f2,
                    vowel=vowel, group=subj))

Run the code above in your browser using DataLab